{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SP LIME\n",
    "\n",
    "## Regression explainer with boston housing prices dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      ".. _boston_dataset:\n",
      "\n",
      "Boston house prices dataset\n",
      "---------------------------\n",
      "\n",
      "**Data Set Characteristics:**  \n",
      "\n",
      "    :Number of Instances: 506 \n",
      "\n",
      "    :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n",
      "\n",
      "    :Attribute Information (in order):\n",
      "        - CRIM     per capita crime rate by town\n",
      "        - ZN       proportion of residential land zoned for lots over 25,000 sq.ft.\n",
      "        - INDUS    proportion of non-retail business acres per town\n",
      "        - CHAS     Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
      "        - NOX      nitric oxides concentration (parts per 10 million)\n",
      "        - RM       average number of rooms per dwelling\n",
      "        - AGE      proportion of owner-occupied units built prior to 1940\n",
      "        - DIS      weighted distances to five Boston employment centres\n",
      "        - RAD      index of accessibility to radial highways\n",
      "        - TAX      full-value property-tax rate per $10,000\n",
      "        - PTRATIO  pupil-teacher ratio by town\n",
      "        - B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n",
      "        - LSTAT    % lower status of the population\n",
      "        - MEDV     Median value of owner-occupied homes in $1000's\n",
      "\n",
      "    :Missing Attribute Values: None\n",
      "\n",
      "    :Creator: Harrison, D. and Rubinfeld, D.L.\n",
      "\n",
      "This is a copy of UCI ML housing dataset.\n",
      "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n",
      "\n",
      "\n",
      "This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
      "\n",
      "The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
      "prices and the demand for clean air', J. Environ. Economics & Management,\n",
      "vol.5, 81-102, 1978.   Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
      "...', Wiley, 1980.   N.B. Various transformations are used in the table on\n",
      "pages 244-261 of the latter.\n",
      "\n",
      "The Boston house-price data has been used in many machine learning papers that address regression\n",
      "problems.   \n",
      "     \n",
      ".. topic:: References\n",
      "\n",
      "   - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
      "   - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
      "\n",
      "Random Forest R^2 Score: 0.881\n",
      "Linear Regression R^2 Score: 0.593\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "import sklearn.ensemble\n",
    "import sklearn.linear_model\n",
    "import sklearn.model_selection\n",
    "import numpy as np\n",
    "from sklearn.metrics import r2_score\n",
    "np.random.seed(1)\n",
    "\n",
    "#load example dataset\n",
    "boston = load_boston()\n",
    "\n",
    "#print a description of the variables\n",
    "print(boston.DESCR)\n",
    "\n",
    "#train a regressor\n",
    "rf = sklearn.ensemble.RandomForestRegressor(n_estimators=1000)\n",
    "train, test, labels_train, labels_test = sklearn.model_selection.train_test_split(boston.data, boston.target, train_size=0.80, test_size=0.20)\n",
    "rf.fit(train, labels_train);\n",
    "\n",
    "#train a linear regressor\n",
    "lr = sklearn.linear_model.LinearRegression()\n",
    "lr.fit(train,labels_train)\n",
    "\n",
    "#print the R^2 score of the random forest\n",
    "print(\"Random Forest R^2 Score: \" +str(round(r2_score(rf.predict(test),labels_test),3)))\n",
    "print(\"Linear Regression R^2 Score: \" +str(round(r2_score(lr.predict(test),labels_test),3)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import lime tools\n",
    "import lime\n",
    "import lime.lime_tabular\n",
    "\n",
    "# generate an \"explainer\" object\n",
    "categorical_features  = np.argwhere(np.array([len(set(boston.data[:,x])) for x in range(boston.data.shape[1])]) <= 10).flatten()\n",
    "explainer = lime.lime_tabular.LimeTabularExplainer(train, feature_names=boston.feature_names, class_names=['price'], categorical_features=categorical_features, verbose=False, mode='regression',discretize_continuous=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "#generate an explanation\n",
    "i = 13\n",
    "exp = explainer.explain_instance(test[i], rf.predict, num_features=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "fig = exp.as_pyplot_figure();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input feature names: \n",
      "['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'\n",
      " 'B' 'LSTAT']\n",
      "\n",
      "\n",
      "Input feature values: \n",
      "[4.3790e-02 8.0000e+01 3.3700e+00 0.0000e+00 3.9800e-01 5.7870e+00\n",
      " 3.1100e+01 6.6115e+00 4.0000e+00 3.3700e+02 1.6100e+01 3.9690e+02\n",
      " 1.0240e+01]\n",
      "\n",
      "\n",
      "Predicted: \n",
      "20.161599999999957\n"
     ]
    }
   ],
   "source": [
    "print(\"Input feature names: \")\n",
    "print(boston.feature_names)\n",
    "print('\\n')\n",
    "\n",
    "print(\"Input feature values: \")\n",
    "print(test[i])\n",
    "print('\\n')\n",
    "\n",
    "print(\"Predicted: \")\n",
    "print(rf.predict(test)[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# SP-LIME pick step\n",
    "\n",
    "### Maximize the 'coverage' function:\n",
    "\n",
    "$c(V,W,I) = \\sum_{j=1}^{d^{\\prime}}{\\mathbb{1}_{[\\exists i \\in V : W_{ij}>0]}I_j}$\n",
    "\n",
    "$W = \\text{Explanation Matrix,  } n\\times d^{\\prime}$\n",
    "\n",
    "$V = \\text{Set of chosen explanations}$\n",
    "\n",
    "$I = \\text{Global feature importance vector,   } I_j = \\sqrt{\\sum_i{|W_{ij}|}}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import lime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "from lime import submodular_pick\n",
    "sp_obj = submodular_pick.SubmodularPick(explainer, train, rf.predict, sample_size=20, num_features=14, num_exps_desired=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "[exp.as_pyplot_figure() for exp in sp_obj.sp_explanations];"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "W=pd.DataFrame([dict(this.as_list()) for this in sp_obj.explanations])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AGE</th>\n",
       "      <th>B</th>\n",
       "      <th>CHAS=0</th>\n",
       "      <th>CHAS=1</th>\n",
       "      <th>CRIM</th>\n",
       "      <th>DIS</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>LSTAT</th>\n",
       "      <th>NOX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>RAD=24</th>\n",
       "      <th>RAD=3</th>\n",
       "      <th>RAD=4</th>\n",
       "      <th>RAD=5</th>\n",
       "      <th>RAD=7</th>\n",
       "      <th>RM</th>\n",
       "      <th>TAX</th>\n",
       "      <th>ZN</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.080724</td>\n",
       "      <td>0.124994</td>\n",
       "      <td>-0.214342</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.181336</td>\n",
       "      <td>-1.298673</td>\n",
       "      <td>-0.161573</td>\n",
       "      <td>-4.601277</td>\n",
       "      <td>-0.192838</td>\n",
       "      <td>-0.423889</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.003099</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.852061</td>\n",
       "      <td>-0.320556</td>\n",
       "      <td>0.012300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.057718</td>\n",
       "      <td>0.037930</td>\n",
       "      <td>-0.250741</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.017215</td>\n",
       "      <td>-1.414275</td>\n",
       "      <td>-0.147413</td>\n",
       "      <td>-4.916553</td>\n",
       "      <td>-0.409355</td>\n",
       "      <td>-0.448896</td>\n",
       "      <td>-0.047497</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.740887</td>\n",
       "      <td>-0.219528</td>\n",
       "      <td>0.011163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.108377</td>\n",
       "      <td>0.108911</td>\n",
       "      <td>-0.081349</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000332</td>\n",
       "      <td>-1.151193</td>\n",
       "      <td>-0.185450</td>\n",
       "      <td>-4.491332</td>\n",
       "      <td>-0.361803</td>\n",
       "      <td>-0.364918</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.025486</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.699323</td>\n",
       "      <td>-0.307213</td>\n",
       "      <td>0.016454</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.138040</td>\n",
       "      <td>0.080173</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.20563</td>\n",
       "      <td>-0.080418</td>\n",
       "      <td>-1.194666</td>\n",
       "      <td>-0.139015</td>\n",
       "      <td>-4.221639</td>\n",
       "      <td>-0.309510</td>\n",
       "      <td>-0.380089</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.084104</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.567589</td>\n",
       "      <td>-0.185666</td>\n",
       "      <td>0.064908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.186729</td>\n",
       "      <td>0.137872</td>\n",
       "      <td>0.094365</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.240311</td>\n",
       "      <td>-1.089373</td>\n",
       "      <td>-0.077094</td>\n",
       "      <td>-4.997545</td>\n",
       "      <td>-0.546299</td>\n",
       "      <td>-0.498371</td>\n",
       "      <td>0.055739</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.506781</td>\n",
       "      <td>-0.216876</td>\n",
       "      <td>-0.084339</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        AGE         B    CHAS=0   CHAS=1      CRIM       DIS     INDUS  \\\n",
       "0 -0.080724  0.124994 -0.214342      NaN  0.181336 -1.298673 -0.161573   \n",
       "1 -0.057718  0.037930 -0.250741      NaN  0.017215 -1.414275 -0.147413   \n",
       "2 -0.108377  0.108911 -0.081349      NaN  0.000332 -1.151193 -0.185450   \n",
       "3 -0.138040  0.080173       NaN  0.20563 -0.080418 -1.194666 -0.139015   \n",
       "4 -0.186729  0.137872  0.094365      NaN -0.240311 -1.089373 -0.077094   \n",
       "\n",
       "      LSTAT       NOX   PTRATIO    RAD=24  RAD=3     RAD=4     RAD=5  RAD=7  \\\n",
       "0 -4.601277 -0.192838 -0.423889       NaN    NaN       NaN -0.003099    NaN   \n",
       "1 -4.916553 -0.409355 -0.448896 -0.047497    NaN       NaN       NaN    NaN   \n",
       "2 -4.491332 -0.361803 -0.364918       NaN    NaN -0.025486       NaN    NaN   \n",
       "3 -4.221639 -0.309510 -0.380089       NaN    NaN -0.084104       NaN    NaN   \n",
       "4 -4.997545 -0.546299 -0.498371  0.055739    NaN       NaN       NaN    NaN   \n",
       "\n",
       "         RM       TAX        ZN  \n",
       "0  1.852061 -0.320556  0.012300  \n",
       "1  1.740887 -0.219528  0.011163  \n",
       "2  1.699323 -0.307213  0.016454  \n",
       "3  1.567589 -0.185666  0.064908  \n",
       "4  1.506781 -0.216876 -0.084339  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "W.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAFahJREFUeJzt3XuMZGd55/HvD1/AoohNsNVMxgOTFd5Lwuwa3DLOskjdZpEGFtmrxVmMHGAis8MCBrKyNwyJZBSvlIQFB4TMBk3aCHMRGHHbWdtLwq0FSDHgcYzHlxAG5A0eHBtsGNJgIJM8+0cXqGn1TJ3uPlU98/b3I5W6zjlvvf08dap/ffp0XVJVSJLa8piNLkCS1D/DXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcFfzktyX5KEkj1+y7hVJ5ofXk+S/J/l6kkeT/G2SP0ry2CXjP5rkz5bN+/Ek102sEWkVDHdtFicBrz/KtncAu4GXAU8Ang88F/jwkjGvAf5TklmAJC8GngnsGVfB0noY7tos3gJcleSMpSuTnAO8Grisqv6yqo5U1d3Ai4CdSS4EqKq/A64E/izJU1j8hfDKqlqYaBdSR4a7NovbgHngqmXrnwvcX1VfXrqyqr4F3Ao8b8m69wDfAG4HPllVnxxjvdK6GO7aTK4GXpvkrCXrzgQeOMr4B4bbl/oC8CTg/f2XJ/XHcNemUVV3ATfxi+fJvwtsOcpNtgy3Az8/hXMV8L+Aa5OcMqZSpXUz3LXZvAn4L8DW4fJngW1Jzl86KMk24ALgM8PlAHPA24HXAj8E3jChmqVVM9y1qVTVQeBG4HXD5b8B3gV8IMkFSU5K8uvAR4FPV9Wnhzd9FYunaP6wqv4JuBz43ST/cuJNSB0Y7tqMrgEev2T5ChaPyt8PLACfZPGfry8CGD475g+By6vqpwBVdQ9wLYvPnsnEKpc6ih/WIUnt8chdkhpkuEtSgwx3SWqQ4S5JDTp5o77xmWeeWWeddRaPf/zjRw9u0A9/+EN734Q2a++btW/ov/f9+/d/t6rOGjVuw8J9+/btvPWtb2VmZmajSthQ8/Pz9r4JbdbeN2vf0H/vSf5fl3GelpGkBhnuktQgw12SGmS4S1KDDHdJapDhLkkN6hzuw7dC/askN62w7bFJbkxyMMmXkmzvs0hJ0uqs5sj99cC9R9l2OfC9qnoa8DbgzestTJK0dp3CPcnZwH9g8T2vV3IxcMPw+keA5/oe15K0cbq+QvXtwO8CTzjK9q3AtwCq6kiSwyx+iPB3lw5KshvYDTA1NcXCwgLz8/NrKPvEZ+/zG13GhtisvR+r7wOHDq953h1bT1/zbSdlo/b5yHBP8kLgoaran2RmPd+sqvYCewGmp6drMBj4kuRNyN5nNrqMiTtW37v23Lzmee+7bOU5jycbtc+7nJZ5NnBRkvuADwEXJnn/sjGHgG0ASU4GTgce7rFOSdIqjAz3qnpjVZ1dVduBS4HPVtVvLRu2D3j58PolwzF+fp8kbZA1vytkkmuA26pqH3A98L4kB4FHWPwlIEnaIKsK96qaZ/FT4amqq5es/zHwm30WJklaO1+hKkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lq0MhwT/K4JF9O8tUkdyf5gxXG7ErynSR3DC+vGE+5kqQuunwS00+AC6tqIckpwBeT/N+qunXZuBur6or+S5QkrdbIcB9+0PXCcPGU4cUPv5ak41inc+5JTkpyB/AQ8Kmq+tIKw16U5M4kH0myrdcqJUmrksUD846DkzOAjwOvraq7lqx/ErBQVT9J8krgxVV14Qq33w3sBpiamjpvbm6OwWCw3h5OSAsLC/a+CW3W3o/V94FDh9c8746tp6/5tpPS9z6fnZ3dX1XTo8Z1Oef+c1X1/SSfA3YCdy1Z//CSYXPA/zzK7fcCewGmp6drMBgwMzOzmhKaMT8/b++b0Gbt/Vh979pz85rnve+ylec8nmzUPu/ybJmzhkfsJDkNeB7w18vGbFmyeBFwb59FSpJWp8uR+xbghiQnsfjL4MNVdVOSa4Dbqmof8LokFwFHgEeAXeMqWJI0Wpdny9wJPGOF9Vcvuf5G4I39liZJWitfoSpJDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkN6vIZqo9L8uUkX01yd5I/WGHMY5PcmORgki8l2T6OYiVJ3XQ5cv8JcGFV/RvgXGBnkguWjbkc+F5VPQ14G/DmfsuUJK3GyHCvRQvDxVOGl1o27GLghuH1jwDPTZLeqpQkrUqqluf0CoOSk4D9wNOAd1bVG5ZtvwvYWVX3D5e/ATyrqr67bNxuYDfA1NTUeXNzcwwGg14aOdEsLCzY+yZ0vPZ+4NDhsc4/dRo8+Gj/8+7Yenr/k/as730+Ozu7v6qmR407uctkVfWPwLlJzgA+nuTpVXXXaouqqr3AXoDp6ekaDAbMzMysdpomzM/P2/smdLz2vmvPzWOd/8odR7j2QKe4WZX7Lpvpfc6+bdQ+X9WzZarq+8DngJ3LNh0CtgEkORk4HXi4jwIlSavX5dkyZw2P2ElyGvA84K+XDdsHvHx4/RLgs9XlfI8kaSy6/J20BbhheN79McCHq+qmJNcAt1XVPuB64H1JDgKPAJeOrWJJ0kgjw72q7gSescL6q5dc/zHwm/2WJklaK1+hKkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ3q8hmq25J8Lsk9Se5O8voVxswkOZzkjuHl6pXmkiRNRpfPUD0CXFlVtyd5ArA/yaeq6p5l475QVS/sv0RJ0mqNPHKvqgeq6vbh9b8H7gW2jrswSdLapaq6D062A58Hnl5VP1iyfgb4KHA/8G3gqqq6e4Xb7wZ2A0xNTZ03NzfHYDBYR/knroWFBXvfhI7X3g8cOjzW+adOgwcf7X/eHVtP73/SnvW9z2dnZ/dX1fSocV1OywCQZMBigP/O0mAfuh14alUtJHkB8AngnOVzVNVeYC/A9PR0DQYDZmZmupbQlPn5eXvfhI7X3nftuXms81+54wjXHugcN53dd9lM73P2baP2eadnyyQ5hcVg/0BVfWz59qr6QVUtDK/fApyS5MxeK5Ukddbl2TIBrgfurao/OcqYJw/HkeT84bwP91moJKm7Ln8nPRt4KXAgyR3Ddb8HPAWgqt4FXAK8KskR4FHg0lrNyXxJUq9GhntVfRHIiDHXAdf1VZQkaX18haokNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1qMtnqG5L8rkk9yS5O8nrVxiTJO9IcjDJnUmeOZ5yJUlddPkM1SPAlVV1e5InAPuTfKqq7lky5vnAOcPLs4A/HX6VJG2AkUfuVfVAVd0+vP73wL3A1mXDLgbeW4tuBc5IsqX3aiVJnaSqug9OtgOfB55eVT9Ysv4m4I+HH6ZNks8Ab6iq25bdfjewG2Bqauq8ubk5BoPBens4IS0sLNj7JnS89n7g0OGxzj91Gjz4aP/z7th6ev+TdtT1Plup9/XUPTs7u7+qpkeN63JaBoAkA+CjwO8sDfbVqKq9wF6A6enpGgwGzMzMrGWqE978/Ly9b0LHa++79tw81vmv3HGEaw90jpvO7rtspvc5u+p6n63U+yTq7vRsmSSnsBjsH6iqj60w5BCwbcny2cN1kqQN0OXZMgGuB+6tqj85yrB9wMuGz5q5ADhcVQ/0WKckaRW6/J30bOClwIEkdwzX/R7wFICqehdwC/AC4CDwI+C3+y9VktTVyHAf/pM0I8YU8Jq+ipIkrY+vUJWkBhnuktQgw12SGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGdfkM1XcneSjJXUfZPpPkcJI7hper+y9TkrQaXT5D9T3AdcB7jzHmC1X1wl4qkiSt28gj96r6PPDIBGqRJPUki59tPWJQsh24qaqevsK2GeCjwP3At4Grquruo8yzG9gNMDU1dd7c3ByDwWCttZ/QFhYW7H0TOl57P3Do8FjnnzoNHny0/3l3bD29/0k76nqfrdT7euqenZ3dX1XTo8Z1OS0zyu3AU6tqIckLgE8A56w0sKr2AnsBpqenazAYMDMz00MJJ575+Xl734SO19537bl5rPNfueMI1x7oI25+0X2XzfQ+Z1dd77OVep9E3et+tkxV/aCqFobXbwFOSXLmuiuTJK3ZusM9yZOTZHj9/OGcD693XknS2o38OynJB4EZ4Mwk9wNvAk4BqKp3AZcAr0pyBHgUuLS6nMiXJI3NyHCvqpeM2H4di0+VlCQdJ3yFqiQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDVoZLgneXeSh5LcdZTtSfKOJAeT3Jnkmf2XKUlajS5H7u8Bdh5j+/OBc4aX3cCfrr8sSdJ6jAz3qvo88MgxhlwMvLcW3QqckWRLXwVKklYvVTV6ULIduKmqnr7CtpuAP66qLw6XPwO8oapuW2HsbhaP7pmamjpvbm6OwWCw6qIPHDq86tsstWPr6eu6fR8WFhbW1Ptarec+6/v+mkTv632MjMvUafDgoxtdxeSNq+/1PDYn9RhZqff11D07O7u/qqZHjTt5zd9hDapqL7AXYHp6ugaDATMzM6ueZ9eem9dVx32Xrf579m1+fn5Nva/Veu6zvu+vSfS+3sfIuFy54wjXHpjoj91xYVx9r+exOanHyEq9TyKD+ni2zCFg25Lls4frJEkbpI9w3we8bPismQuAw1X1QA/zSpLWaOTfSUk+CMwAZya5H3gTcApAVb0LuAV4AXAQ+BHw2+MqVpLUzchwr6qXjNhewGt6q0iStG6+QlWSGmS4S1KDDHdJapDhLkkNMtwlqUGGuyQ1yHCXpAYZ7pLUIMNdkhpkuEtSgwx3SWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIa1Cnck+xM8rUkB5PsWWH7riTfSXLH8PKK/kuVJHXV5TNUTwLeCTwPuB/4SpJ9VXXPsqE3VtUVY6hRkrRKXY7czwcOVtU3q+qnwIeAi8dbliRpPbL4+dbHGJBcAuysqlcMl18KPGvpUXqSXcAfAd8B/gb4b1X1rRXm2g3sBpiamjpvbm6OwWCw6qIPHDq86tsstWPr6eu6fR8WFhbW1Ptarec+6/v+mkTv632MjMvUafDgoxtdxeSNq+/1PDYn9RhZqff11D07O7u/qqZHjRt5Wqaj/wN8sKp+kuSVwA3AhcsHVdVeYC/A9PR0DQYDZmZmVv3Ndu25eV3F3nfZ6r9n3+bn59fU+1qt5z7r+/6aRO/rfYyMy5U7jnDtgb5+7E4c4+p7PY/NST1GVup9EhnU5bTMIWDbkuWzh+t+rqoerqqfDBfngPP6KU+StBZdwv0rwDlJfjXJqcClwL6lA5JsWbJ4EXBvfyVKklZr5N9JVXUkyRXAnwMnAe+uqruTXAPcVlX7gNcluQg4AjwC7BpjzZKkETqdBKuqW4Bblq27esn1NwJv7Lc0SdJa+QpVSWqQ4S5JDTLcJalBhrskNchwl6QGGe6S1CDDXZIaZLhLUoMMd0lqkOEuSQ0y3CWpQYa7JDXIcJekBhnuktQgw12SGmS4S1KDDHdJalCncE+yM8nXkhxMsmeF7Y9NcuNw+5eSbO+7UElSdyPDPclJwDuB5wO/Brwkya8tG3Y58L2qehrwNuDNfRcqSequy5H7+cDBqvpmVf0U+BBw8bIxFwM3DK9/BHhukvRXpiRpNVJVxx6QXALsrKpXDJdfCjyrqq5YMuau4Zj7h8vfGI757rK5dgO7h4v/AngY+IUxm8iZ2PtmtFl736x9Q/+9P7Wqzho16OQev+FIVbUX2Puz5SS3VdX0JGs4Xti7vW8mm7Vv2Ljeu5yWOQRsW7J89nDdimOSnAyczuJRuSRpA3QJ968A5yT51SSnApcC+5aN2Qe8fHj9EuCzNep8jyRpbEaelqmqI0muAP4cOAl4d1XdneQa4Laq2gdcD7wvyUHgERZ/AXSxd/SQZtn75rRZe9+sfcMG9T7yH6qSpBOPr1CVpAYZ7pLUoImGe5JfTvKpJF8ffn3iCmNmk9yx5PLjJP9xknWOQ5feh+OekuQvktyb5J4W3sphFb3/45L9vvyf9iekrr0Px/5SkvuTXDfJGsel48/7U5PcPtzndyf5rxtRa5869n1ukr8c9nxnkhf3Xcekj9z3AJ+pqnOAzwyXf0FVfa6qzq2qc4ELgR8BfzHZMsdiZO9D7wXeUlX/isVXBz80ofrGqWvvj/5s31fVRZMrb6y69g7wP4DPT6SqyejS+wPAbwx/3p8F7EnyKxOscRy69P0j4GVV9evATuDtSc7otYqqmtgF+BqwZXh9C/C1EeN3Ax+YZI0b2TuL793zxY2udaP2O7Cw0bVuYO/nsfjWHruA6za67kn2vmT8k4C/BX5lo2ufZN/DcV8FzumzjkkfuU9V1QPD638HTI0YfynwwfGWNDFdev/nwPeTfCzJXyV5y/CN2050Xff745LcluTWFk7FDY3sPcljgGuBqyZZ2AR02u9JtiW5E/gW8Oaq+vakChyTVeVckvOBU4Fv9FlE728/kOTTwJNX2PT7SxeqqpIc9XmYSbYAO1h8fv0JoYfeTwaeAzyDxSOYG1k8kru+30r719N+f2pVHUryz4DPJjlQVb0+4Mehh95fDdxSVfefaO+318d+r6pvAf96eDrmE0k+UlUP9l9tf3rOufcBL6+qf+qzxt7Dvar+/dG2JXkwyZaqemDY1LHOJ/9n4ONV9Q991zguPfR+P3BHVX1zeJtPABdwAoR7H/u9qg4Nv34zyTyLv+SO+3DvofffAJ6T5NXAADg1yUJVHev8/HGhx593qurbwzchfA6L7y573Oqj7yS/BNwM/H5V3dp3jZM+LbP0bQpeDvzvY4x9Ce2ckoFuvX8FOCPJz97x7ULgngnUNm4je0/yxCSPHV4/E3g2m6T3qrqsqp5SVdtZPDXz3hMh2Dvost/PTnLa8PoTgX/H4jnrE1mXvk8FPs7ivh7PL7IJ/6PhSSz+9/jrwKeBXx6unwbmlozbzuKbkT1mkvUdJ70/D7gTOAC8Bzh1o2ufRO/Avx32/NXh18s3uu5J7vcl43fRzj9Uu+z3nz3evzr8unuj655Q378F/ANwx5LLuX3W4dsPSFKDfIWqJDXIcJekBhnuktQgw12SGmS4S1KDDHdJapDhLkkN+v8C4a1pGa0iTQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "im=W.hist('NOX',bins=20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Text explainer using the newsgroups"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/mnt/c/Users/marcotcr/work/lime/python3env/lib/python3.6/re.py:212: FutureWarning: split() requires a non-empty pattern match.\n",
      "  return _compile(pattern, flags).split(string, maxsplit)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Document id: 83\n",
      "Probability(christian) = 0.442\n",
      "True class: atheism\n"
     ]
    }
   ],
   "source": [
    "# run the text explainer example notebook, up to single explanation\n",
    "import sklearn\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import sklearn.ensemble\n",
    "import sklearn.metrics\n",
    "# from __future__ import print_function\n",
    "\n",
    "from sklearn.datasets import fetch_20newsgroups\n",
    "categories = ['alt.atheism', 'soc.religion.christian']\n",
    "newsgroups_train = fetch_20newsgroups(subset='train', categories=categories)\n",
    "newsgroups_test = fetch_20newsgroups(subset='test', categories=categories)\n",
    "class_names = ['atheism', 'christian']\n",
    "\n",
    "vectorizer = sklearn.feature_extraction.text.TfidfVectorizer(lowercase=False)\n",
    "train_vectors = vectorizer.fit_transform(newsgroups_train.data)\n",
    "test_vectors = vectorizer.transform(newsgroups_test.data)\n",
    "\n",
    "rf = sklearn.ensemble.RandomForestClassifier(n_estimators=500)\n",
    "rf.fit(train_vectors, newsgroups_train.target)\n",
    "\n",
    "pred = rf.predict(test_vectors)\n",
    "sklearn.metrics.f1_score(newsgroups_test.target, pred, average='binary')\n",
    "\n",
    "from lime import lime_text\n",
    "from sklearn.pipeline import make_pipeline\n",
    "c = make_pipeline(vectorizer, rf)\n",
    "\n",
    "from lime.lime_text import LimeTextExplainer\n",
    "explainer = LimeTextExplainer(class_names=class_names)\n",
    "\n",
    "idx = 83\n",
    "exp = explainer.explain_instance(newsgroups_test.data[idx], c.predict_proba, num_features=6)\n",
    "print('Document id: %d' % idx)\n",
    "print('Probability(christian) =', c.predict_proba([newsgroups_test.data[idx]])[0,1])\n",
    "print('True class: %s' % class_names[newsgroups_test.target[idx]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/mnt/c/Users/marcotcr/work/lime/python3env/lib/python3.6/re.py:212: FutureWarning: split() requires a non-empty pattern match.\n",
      "  return _compile(pattern, flags).split(string, maxsplit)\n",
      "/mnt/c/Users/marcotcr/work/lime/python3env/lib/python3.6/re.py:212: FutureWarning: split() requires a non-empty pattern match.\n",
      "  return _compile(pattern, flags).split(string, maxsplit)\n"
     ]
    }
   ],
   "source": [
    "sp_obj = submodular_pick.SubmodularPick(explainer, newsgroups_test.data, c.predict_proba, sample_size=2, num_features=6,num_exps_desired=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "[exp.as_pyplot_figure(label=exp.available_labels()[0]) for exp in sp_obj.sp_explanations];"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/mnt/c/Users/marcotcr/work/lime/python3env/lib/python3.6/site-packages/sklearn/ensemble/forest.py:246: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.9333333333333333"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "iris=load_iris()\n",
    "from sklearn.model_selection import train_test_split as tts\n",
    "Xtrain,Xtest,ytrain,ytest=tts(iris.data,iris.target,test_size=.2)\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "rf=RandomForestClassifier()\n",
    "rf.fit(Xtrain,ytrain)\n",
    "rf.score(Xtest,ytest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "explainer = lime.lime_tabular.LimeTabularExplainer(Xtrain, \n",
    "                                                   feature_names=iris.feature_names,\n",
    "                                                   class_names=iris.target_names, \n",
    "                                                   verbose=False, \n",
    "                                                   mode='classification',\n",
    "                                                   discretize_continuous=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0, 2, 1]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exp=explainer.explain_instance(Xtrain[i],rf.predict_proba,top_labels=3)\n",
    "exp.available_labels()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "sp_obj = submodular_pick.SubmodularPick(data=Xtrain,explainer=explainer,num_exps_desired=5,predict_fn=rf.predict_proba, sample_size=20, num_features=4, top_labels=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exp number</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>setosa</th>\n",
       "      <td>0</td>\n",
       "      <td>-0.410513</td>\n",
       "      <td>-0.049033</td>\n",
       "      <td>-0.003635</td>\n",
       "      <td>0.010532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>setosa</th>\n",
       "      <td>1</td>\n",
       "      <td>-0.416660</td>\n",
       "      <td>-0.038774</td>\n",
       "      <td>0.013522</td>\n",
       "      <td>-0.000206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>setosa</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.249963</td>\n",
       "      <td>-0.023399</td>\n",
       "      <td>-0.001491</td>\n",
       "      <td>0.000962</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>setosa</th>\n",
       "      <td>3</td>\n",
       "      <td>-0.423744</td>\n",
       "      <td>-0.053167</td>\n",
       "      <td>0.006401</td>\n",
       "      <td>-0.001301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>setosa</th>\n",
       "      <td>4</td>\n",
       "      <td>-0.255049</td>\n",
       "      <td>-0.037626</td>\n",
       "      <td>0.002671</td>\n",
       "      <td>0.002027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>versicolor</th>\n",
       "      <td>0</td>\n",
       "      <td>0.254472</td>\n",
       "      <td>-0.042948</td>\n",
       "      <td>0.029553</td>\n",
       "      <td>-0.013252</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>versicolor</th>\n",
       "      <td>1</td>\n",
       "      <td>0.261545</td>\n",
       "      <td>-0.054880</td>\n",
       "      <td>0.024067</td>\n",
       "      <td>-0.001325</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>versicolor</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.026307</td>\n",
       "      <td>-0.228508</td>\n",
       "      <td>0.011449</td>\n",
       "      <td>0.008821</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>versicolor</th>\n",
       "      <td>3</td>\n",
       "      <td>0.282608</td>\n",
       "      <td>-0.034669</td>\n",
       "      <td>0.028875</td>\n",
       "      <td>-0.001872</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>versicolor</th>\n",
       "      <td>4</td>\n",
       "      <td>-0.009620</td>\n",
       "      <td>-0.164904</td>\n",
       "      <td>-0.015407</td>\n",
       "      <td>-0.008737</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>virginica</th>\n",
       "      <td>0</td>\n",
       "      <td>0.156041</td>\n",
       "      <td>0.091980</td>\n",
       "      <td>-0.025919</td>\n",
       "      <td>0.002720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>virginica</th>\n",
       "      <td>1</td>\n",
       "      <td>0.155115</td>\n",
       "      <td>0.093654</td>\n",
       "      <td>-0.037589</td>\n",
       "      <td>0.001530</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>virginica</th>\n",
       "      <td>2</td>\n",
       "      <td>0.276270</td>\n",
       "      <td>0.251906</td>\n",
       "      <td>-0.009958</td>\n",
       "      <td>-0.009783</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>virginica</th>\n",
       "      <td>3</td>\n",
       "      <td>0.141136</td>\n",
       "      <td>0.087837</td>\n",
       "      <td>-0.035277</td>\n",
       "      <td>0.003173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>virginica</th>\n",
       "      <td>4</td>\n",
       "      <td>0.264669</td>\n",
       "      <td>0.202530</td>\n",
       "      <td>0.012736</td>\n",
       "      <td>0.006710</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            exp number  petal length (cm)  petal width (cm)  \\\n",
       "setosa               0          -0.410513         -0.049033   \n",
       "setosa               1          -0.416660         -0.038774   \n",
       "setosa               2          -0.249963         -0.023399   \n",
       "setosa               3          -0.423744         -0.053167   \n",
       "setosa               4          -0.255049         -0.037626   \n",
       "versicolor           0           0.254472         -0.042948   \n",
       "versicolor           1           0.261545         -0.054880   \n",
       "versicolor           2          -0.026307         -0.228508   \n",
       "versicolor           3           0.282608         -0.034669   \n",
       "versicolor           4          -0.009620         -0.164904   \n",
       "virginica            0           0.156041          0.091980   \n",
       "virginica            1           0.155115          0.093654   \n",
       "virginica            2           0.276270          0.251906   \n",
       "virginica            3           0.141136          0.087837   \n",
       "virginica            4           0.264669          0.202530   \n",
       "\n",
       "            sepal length (cm)  sepal width (cm)  \n",
       "setosa              -0.003635          0.010532  \n",
       "setosa               0.013522         -0.000206  \n",
       "setosa              -0.001491          0.000962  \n",
       "setosa               0.006401         -0.001301  \n",
       "setosa               0.002671          0.002027  \n",
       "versicolor           0.029553         -0.013252  \n",
       "versicolor           0.024067         -0.001325  \n",
       "versicolor           0.011449          0.008821  \n",
       "versicolor           0.028875         -0.001872  \n",
       "versicolor          -0.015407         -0.008737  \n",
       "virginica           -0.025919          0.002720  \n",
       "virginica           -0.037589          0.001530  \n",
       "virginica           -0.009958         -0.009783  \n",
       "virginica           -0.035277          0.003173  \n",
       "virginica            0.012736          0.006710  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df=pd.DataFrame({})\n",
    "for this_label in range(3):\n",
    "    dfl=[]\n",
    "    for i,exp in enumerate(sp_obj.sp_explanations):\n",
    "        l=exp.as_list(label=this_label)\n",
    "        l.append((\"exp number\",i))\n",
    "        dfl.append(dict(l))\n",
    "    dftest=pd.DataFrame(dfl)\n",
    "    df=df.append(pd.DataFrame(dfl,index=[iris.target_names[this_label] for i in range(len(sp_obj.sp_explanations))]))\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "lime3",
   "language": "python",
   "name": "lime3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
